package com.atguigu.gmall.product.service.impl;

import com.atguigu.gmall.common.execption.GmallException;
import com.atguigu.gmall.model.product.SkuSaleAttrValue;
import com.atguigu.gmall.product.mapper.SkuSaleAttrValueMapper;
import com.atguigu.gmall.product.service.SkuSaleAttrValueService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/***
 * sku销售属性值表service层实现类
 */
@Service
public class SkuSaleAttrValueServiceImpl implements SkuSaleAttrValueService {

    @Autowired
    private SkuSaleAttrValueMapper skuSaleAttrValueMapper;

    /**
     * 保存数据
     * @param skuId
     * @param spuId
     */
    @Override
    public void save(Long skuId, Long spuId ,List<SkuSaleAttrValue> skuSaleAttrValueList) {
        //遍历保存
        skuSaleAttrValueList.stream().forEach(skuSaleAttrValue -> {
            //补全参数
            skuSaleAttrValue.setSkuId(skuId);
            skuSaleAttrValue.setSpuId(spuId);
            //调用dao层方法，新增
            int insert = skuSaleAttrValueMapper.insert(skuSaleAttrValue);
            if(insert <= 0){
                throw new GmallException("新增sku信息表数据失败",null);
            }
        });
    }

    /**
     * 根据spuId查询sku与销售属性值组合键值对
     *
     * @param spuId
     * @return
     */
    @Override
    public Map listSkuSaleAttrValueBySpuId(Long spuId) {
        //获取到数据
        List<Map> maps = skuSaleAttrValueMapper.selectListBySpuId(spuId);

        //对数据进行处理
        HashMap<Object, Object> map = new HashMap<>();
        maps.stream().forEach(a->{
            map.put(a.get("values_id"),a.get("sku_id"));
        });

        //返回
        return map;
    }
}
